<?
/**
 *页面访问权限管理类.
 *从用户身份和权限配置数组获得当前页面的访问权限.
 *权限配置数组文件使用见common/auth_config.php注释。
 */
class Auth{

	/**
	 *可访问页面数组
	 *@var array
	 */
	private $authurls=array();
	
	/**
	 *类构造函数.
	 *初始化页面访问权限管理类，并对$authurls赋值
	 *@param array $_auth 页面访问权限配置数组
	 *@param int $dtype 会员身份类型，员工账号传入上级身份类型
	 *@param string $qxs 员工账号权限字符串，默认无权限，非员工账号传入all字符串
	 */
	public function __construct($_auth,$dtype,$qxs=""){
		$qxurls=array();
		foreach($_auth as $model=>$row){
			/*会员类型权限判定*/
			if(!in_array($dtype,explode(",",$row['limit']))) continue;
			/*员工权限判定*/
			if($qxs!="all"&&!in_array($model,$qxs)) continue;
			$qxurls=array_merge($qxurls,$row['url']);
		}
		$this->authurls=$qxurls;
	}
	
	/**
	 *页面访问权限.
	 *判定对传入的页面url是否有访问权限
	 *@param string $url 传入的url文件名如：plist.html
	 *@return bool true有访问权限，false反之
	 *@see Auth::authVerify()
	 */
	public function checkAuth($url){
		return in_array($url,$this->authurls);
	}
	
	/**
	 *返回可访问页面数组函数.
	 *@return array
	 */
	public function authUrl(){
		return $this->authurls;
	}
	
	/**
	 *当前页面文件访问权限判定函数.
	 *如果无访问权限，会报错，并强制终止程序。
	 *@return void
	 */
	public function authVerify(){/*验证当前页面是否有权限*/
		if(!$this->checkAuth(basename($_SERVER['PHP_SELF']))){
			echo "你无权限访问当前页面(".$_SERVER['PHP_SELF'].")，请联系管理员!";
			exit;
		}
	}
}
?>